package com.gxuwz.business.service;


import java.util.List;

import com.gxuwz.business.entity.SysRole;
import com.gxuwz.business.entity.SysUser;
import com.gxuwz.util.Result;

/**
 * <p>Title: 类名：用户-业务逻辑--接口</p>
 * <p>Description:mailsender-业务逻辑/n</p>
 */
public interface ISysUserService {
	
	/**
	 * 根据用户编号查询用户对象
	 * @param userid 用户编号
	 * @return 用户对象
	 */
	public SysUser findByUserId(String userid);
	
	/**
	 * 根据用户编号和令牌，查询用户对象
	 * @param userId 用户编号
	 * @param sign 令牌
	 * @return 2个参数，第一个成功与否：1-成功；0-未知错误；2-令牌有误
	 */
	public List<Object> findUserByUserIdAndSign(String userId,String sign);
	/**
	 * 修改用户密码
	 * @param userId 用户编号
	 * @param userPassword  用户密码
	 * @return 1-成功；0-出错
	 */
	public int updateUserPassWd(String userId,String userPassword);
	
	/**
	 * 获取令牌
	 * @param userId 用户编号
	 * @param sign 令牌
	 * @return true 令牌符合,false 令牌错误
	 */
	public boolean checkSign(String userId,String sign);
	
	

	/**
	 * 用户登录
	 * @param sysUser 用户对象
	 * @return true -允许登录；false -不允许登录
	 */
	public boolean isLogin(SysUser sysUser);
	
	/**
	 * 根据Id查询单条记录
	 * @param userId
	 * @return
	 */
	public SysUser findById(String userId);
	
	
	/**
	 * 保存用户个人修改的信息
	 * @param sysUser
	 * @param oldPassword
	 */
	public void updateUserMessage(SysUser sysUser, String oldPassword);
	
	
	/**
	 * 检验用户编号是否存在
	 * @param userId
	 * @return
	 */
	public boolean checkUserId(String userId);
	/**
	 * 校验用户密码
	 * @param rawPassword 数据库保存的加密的密码
	 * @param password 明文密码（需要匹配的用户输入的那份）
	 * @return
	 */
	public boolean checkPasswd(String rawPassword, String password);
	/**
	 * 根据用户名称查询用户信息
	 * @param userName 用户名称
	 * @return
	 */
	public SysUser findByName(String userName);
	
	
	/**
	 * 添加用户--所有的保存都要调用该方法，因为有加密
	 * @param sysUser
	 *//*
	public void add(SysUser sysUser);
	*/
	
	
	
	/**
	 * 添加用户--所有的保存都要调用该方法，因为有加密
	 * @param sysUser
	 */
	public void add(SysUser sysUser, String[] roleId);

	public void update(SysUser sysUser, String[] roleId, String oldPassword);
	/**
	 * 删除用户
	 */
	public void delete(Integer id, String userId);
	
	/**
	 * 根据用户id查找角色id
	 * @param userId
	 * @return 角色id的集合
	 */
	public List<String> findUserPermissions(String userId);
	
	
    /**
     * 根据路径查找角色
     * @param resourcePath
     * @return 拥有访问该路径权限的角色集合
     */
	List<SysRole> findRoleByResourcePath(String resourcePath);
	/**
     * 检查用户名是否存在
     * @param sysUser
     * @return sysUser
     */
	public boolean checkUserName(SysUser sysUser);

	/**
	 * 用户修改密码
	 * @param sysUser
	 * @param oldPassword
	 */
	public void updatePassword(SysUser sysUser, String oldPassword);
	

	/**
	 * 用户登录
	 * @param sysUser 用户对象
	 * @return true -密码正确；false -密码错误
	 */
	public boolean isTrue(SysUser sysUser);
	
	/**
	 * 修改密码
	 */
	public boolean updatePassword(String newPassword,SysUser sysUser);
	
	/**
	 * 更新信息
	 */
	public boolean update(SysUser user);
	/**
	 * 上传头像
	 * @param sysUser
	 * @return
	 */
	public Result uploadUserFace(SysUser sysUser);


}
